#ifndef EXCEPTION_H
#define EXCEPTION_H

#include <QString>
#include <QException>


class Exception : public QException
{
public:
    // 构造函数，接收错误消息
    explicit Exception(const QString &errMsg) : _errMsg(errMsg) {}

    // 拷贝构造函数
    Exception(const Exception &other) : _errMsg(other._errMsg) {}

    // 销毁函数
    ~Exception() noexcept override {}

    // 重写 QException 的 raise() 方法
    void raise() const override { throw *this; }

    // 重写 QException 的 clone() 方法
    Exception *clone() const override { return new Exception(*this); }

    // 重写 std::exception 的 what() 方法，返回错误消息
    const char *what() const noexcept override {
        return _errMsg.toUtf8().constData();
    }

    // 获取错误消息
    QString getMessage() const {
        return _errMsg;
    }

private:
    QString _errMsg; // 错误消息
};

#endif // EXCEPTION_H
